WRITE(2) | 리눅스 프로그래머 매뉴얼 | WRITE(2) |
이름¶
write - 파일 기술자가 가리키는 파일에 쓴다.
사용법¶
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
설명¶
write는 buf로 시작하는 버퍼에서 파일 기술자 fd로 참조되는 파일에 count 바이트까지를 쓴다. POSIX는 write()가 반환된 후 새로운 데이터가 반환될 수 있다는 것을 증명하도록 read()를 요구한다. 모든 파일 시스템이 POSIX를 따르지는 않는다.
반환값¶
성공시, 쓰여진 바이트 수를 반환한다(0은 쓰여진 것이 없음을 나타낸다.) 에러라면, -1을 반환하며 errno는 적당한 값으로 설정된다. 만일 count가 0이고 파일 기술자가 정규 파일을 가리킨다면 0은 다른 결과를 야기시키지 않고 반환된다. 특수 파일에서의 결과는 호환되지 않는다.
에러¶
- EBADF
- fd가 유효한 파일 기술자가 아니거나 쓰여지기 위해 열려지지 않았다.
- EINVAL
- fd가 쓰기에 적당하지 않은 객체와 연결되었다.
- EFAULT
- buf가 접근할 수 없는 주소 공간을 가리키고 있다.
- EPIPE
- fd가 읽을 끝이 닫혀진 소켓이나 파이프에 연결되었다. 이것은 쓰고 있는 프로세스가 SIGPIPE 신호를 받았을때 일어난다; 이것이 잡히고, 봉쇄나 무시되면 EPIPE 에러가 리턴된다.
- EAGAIN
- 넌-블록킹 I/O가 O_NONBLOCK을 사용하였고 즉시 데이터를 쓰기 위해 fd와 연결된 파이프나 소켓에 공간이 없다.
- EINTR
- 어떤 데이터를 쓰기전 에 시스템 콜이 어떤 신호에 의해 인터럽트 되었다.
- ENOSPC
- fd로 참조되는 파일을 포함하는 장치가 데이터를 위한 공간이 없다.
- EIO
- inode를 수정하는 동안 저레벨 I/O 에러가 일어났다.
fd와 연결된 객체에 의존하여 다른 에러가 일어날 수 있다.
호환¶
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 문서에는 EDEADLK, EFBIG, ENOLCK, ENOLNK, ENOSR, ENXIO, EPIPE, ERANGE의 새로운 에러 조건이 추가되었다. SVr4에서는 데이터가 실제로 쓰여지기 이전 어느 시점에서도 쓰기 작업이 인터럽트 되어 EINTR 값이 반환될 수 있다.
관련 항목¶
open(2), read(2), fcntl(2), close(2), lseek(2), select(2), ioctl(2), fsync(2), fwrite(3)
역자¶
정강훈 <skyeyes@soback.kornet.net>, 2000년 5월 29일
1996년 1월 13일 | Linux 2.0.32 |